﻿// Inner Kit 库
// 总头文件
// Copyright (c) 2024 by 尔西大帝. All rights reserved.
//
// 这个文件包括所有工具的连接。使用时连接此文件即可。
//
// Author: 尔西大帝
// Email: 2670613871@qq.com
// Created: 2024-12-01

#pragma once

#include <string>

namespace ikit {
struct ImageData {
  ImageData();
  ImageData(const std::wstring& filename, bool is_flip = false);

  // 此项目没有析构函数。当载入了信息的时候，需要手动调用Release。
  // 因为他做为一个简单结构，需要到处赋值。
  ~ImageData() = default;

  unsigned char* Load(const std::wstring& filename, bool is_flip = false);
  void ConvertToChannels4(bool is_normal);
  void Release();
  bool IsValid() const { return data != nullptr; }

  int width;
  int height;
  int channels;
  unsigned char* data;
};


ImageData load_image(const std::wstring& filename, bool is_flip = false);
} // namespace ikit